// HJ17 坐标移动/字符串/strtol/stringSplit
// https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29?tpId=37
// 中等 
// 开发一个坐标计算工具，
// A表示向左移动，D表示向右移动，W表示向上移动，S表示向下移动。
// 从（0,0）点开始移动，从输入字符串里面读取一些坐标，并将最终输入结果输出到输出文件里面。
// 输入合法坐标为A(或者D或者W或者S) + 数字（两位以内）
// 坐标之间以;分隔。
// 非法坐标点需要进行丢弃。如AA10;  A1A;  $%$;  YAD; 等。
// 下面是一个简单的例子 如：
// A10;S20;W10;D30;X;A1A;B10A11;;A10;
// 处理过程：
// 起点（0,0）
// +   A10   =  （-10,0）
// +   S20   =  (-10,-20)
// +   W10  =  (-10,-10)
// +   D30  =  (20,-10)
// +   x  =  无效
// +   A1A   =  无效
// +   B10A11   =  无效
// +  一个空 不影响
// +   A10  =  (10,-10)
// 结果 （10， -10）

#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;

vector<string> stringSplit(const string& str, char delim) {
  stringstream ss(str);
  vector<string> vecStr;
  for (string it; getline(ss, it, delim);) {
    vecStr.push_back(it);
  }
  return vecStr;
}

int strToNum(const char* str) {
  char* ptr;
  long ret = strtol(str, &ptr, 10);
  if (ptr && *ptr == 0) {
    return ret;
  }
  return 0;
}

int stringToNum(const string& str) {
  int res;
  istringstream ss(str);
  ss >> res;
  return res;
}

int main() {
  string strLine = "A10;S20;W10;D30;X;A1A;B10A11;;A10;";
  while (cin >> strLine) {
    stringstream ss(strLine);
    int posX = 0;
    int posY = 0;
    for (string item; getline(ss, item, ';');) {
      if (item.length() < 2 || item.length() > 3) {
        continue;
      }
	  int n = strToNum(item.substr(1).c_str());
      switch (item[0]) {
        case 'A': posX -= n; break;
        case 'D': posX += n; break;
        case 'W': posY += n; break;
        case 'S': posY -= n; break;
        default: break;
      }
    }
    printf("%d,%d\n", posX, posY);
  }
  return 0;
}